<template>
  <van-popup
    v-model="popupShow"
    closeable
    lock-scroll
    safe-area-inset-bottom
    @closed="handleClosed"
    style="width: 100%; height: 100vh"
  >
    <div class="close" @click="handleClosed">×</div>
    <video-player
      class="video-player vjs-custom-skin"
      @play="onPlayerPlay($event)"
      :playsinline="true"
      :options="playerOptions"
      ref="videoPlayer"
      @statechanged="playerStateChanged($event)"
    ></video-player>
  </van-popup>
</template>
<script>
import { videoPlayer } from 'vue-video-player'
import 'vue-video-player/src/custom-theme.css'
import 'video.js/dist/video-js.css'
export default {
  props: {
    url: {
      type: String,
      default: ''
    },
    show: {
      type: Boolean,
      default: false
    }
  },
  data() {
    return {
      popupShow: false,
      playerOptions: {
        playbackRates: [0.5, 1.0, 1.5, 2.0], // 可选的播放速度
        autoplay: true, // 如果为true,浏览器准备好时开始回放。
        // muted: false, // 默认情况下将会消除任何音频。
        loop: false, // 是否视频一结束就重新开始。
        preload: 'auto', // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频（如果浏览器支持）
        language: 'zh-CN',
        // // aspectRatio: '16:9', // 将播放器置于流畅模式，并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字（例如"16:9"或"4:3"）
        // fluid: true, // 当true时，Video.js player将拥有流体大小。换句话说，它将按比例缩放以适应其容器。
        // // width: '100%',
        height: document.documentElement.clientHeight,
        sources: [
          {
            type: 'video/x-flv', // 类型
            src: '' // url地址
          }
        ],
        // poster: '', // 封面地址
        notSupportedMessage: '此视频暂无法播放，请稍后再试', // 允许覆盖Video.js无法播放媒体源时显示的默认信息。
        controlBar: {
          timeDivider: true, // 当前时间和持续时间的分隔符
          durationDisplay: true, // 显示持续时间
          remainingTimeDisplay: false, // 是否显示剩余时间功能
          fullscreenToggle: true // 是否显示全屏按钮
        }
      }
    }
  },
  watch: {
    url(newVal) {
      if (newVal) {
        this.playerOptions.sources = [
          {
            type: 'video/x-flv', // 类型
            src: newVal // url地址
          }
        ]
      } else {
        this.playerOptions.sources = [
          {
            type: 'video/x-flv', // 类型
            src: newVal // url地址
          }
        ]
      }
    },
    show(newVal) {
      this.popupShow = newVal
    }
  },
  components: {
    videoPlayer
  },
  computed: {},
  beforeCreate() {},
  mounted() {},
  methods: {
    full(element) {
      // 做兼容处理
      if (element.requestFullscreen) {
        element.requestFullscreen()
      } else if (element.mozRequestFullScreen) {
        element.mozRequestFullScreen()
      } else if (element.msRequestFullscreen) {
        element.msRequestFullscreen()
      } else if (element.oRequestFullscreen) {
        element.oRequestFullscreen()
      } else if (element.webkitRequestFullscreen) {
        element.webkitRequestFullScreen()
      } else {
        var docHtml = document.documentElement
        var docBody = document.body
        var videobox = document.getElementsByClassName('video-player')
        var cssText = 'width:100%;height:100%;overflow:hidden;'
        docHtml.style.cssText = cssText
        docBody.style.cssText = cssText
        videobox.style.cssText = cssText + ';' + 'margin:0px;padding:0px;'
        document.IsFullScreen = true
      }
    },
    onPlayerPlay(player) {
      // this.full(player)
    },
    // 播放状态改变回调
    playerStateChanged(playerCurrentState) {
      // console.log('player current update state', playerCurrentState)
    },
    handleClosed() {
      this.popupShow = false
      this.$emit('update:show', false)
    }
  }
}
</script>
<style scoped lang="less">
/deep/.video-js {
  background: rgba(0, 0, 0, 0.5);
}
.close {
  color: #fff;
  font-size: 150px;
  cursor: pointer;
  position: absolute;
  right: 10%;
  top: 15%;
  z-index: 999;
}
</style>
